package com.yxh.util;

import java.io.File;

import android.content.Context;
import android.graphics.Bitmap;

import com.nostra13.universalimageloader.cache.disc.impl.UnlimitedDiscCache;
import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.cache.memory.impl.UsingFreqLimitedMemoryCache;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.ImageScaleType;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.nostra13.universalimageloader.core.download.BaseImageDownloader;
import com.nostra13.universalimageloader.utils.StorageUtils;
import com.yxh.R;

public class Options {

	private static DisplayImageOptions options = null;

	private static DisplayImageOptions options2 = null;  //设置时间图片 
	
	private static DisplayImageOptions options3 = null;  //二维码图片

	private static DisplayImageOptions userPicOptions = null;

	public static ImageLoaderConfiguration configuration = null;

	@SuppressWarnings("deprecation")
	public static DisplayImageOptions getListOptions() {
		if (options == null) {
			options = new DisplayImageOptions.Builder()
					// 设置图片在下载期间显示的图片
					.showImageOnLoading(R.drawable.default_class_icon)
					// 设置图片Uri为空或是错误的时候显示的图片
					.showImageForEmptyUri(R.drawable.default_class_icon)
					// 设置图片加载/解码过程中错误时候显示的图片
					.showImageOnFail(R.drawable.default_class_icon)
					.cacheInMemory(false)
					// 设置下载的图片是否缓存在内存中
					.cacheOnDisc(true)
					// 设置下载的图片是否缓存在SD卡中
					.considerExifParams(true)
					.imageScaleType(ImageScaleType.EXACTLY)// 设置图片以如何的编码方式显示
					.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型
					// .decodingOptions(android.graphics.BitmapFactory.Options
					// decodingOptions)//设置图片的解码配置
					.considerExifParams(true)
					// .delayBeforeLoading(1000)
					// 设置图片下载前的延迟
					.delayBeforeLoading(100)// int delayInMillis为你设置的延迟时间
					// 设置图片加入缓存前，对bitmap进行设置
					// 。preProcessor(BitmapProcessor preProcessor)
					.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
					// .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角，弧度为多少
					// .displayer(new FadeInBitmapDisplayer(10))// 淡入
					.build();
		}

		return options;
	}

	public static DisplayImageOptions getListOptions2() {
		if (options2 == null) {
			options2 = new DisplayImageOptions.Builder()
					// 设置图片在下载期间显示的图片
//					.showImageOnLoading(R.drawable.d)
					// 设置图片Uri为空或是错误的时候显示的图片
//					.showImageForEmptyUri(R.drawable.ic_launcher)
					// 设置图片加载/解码过程中错误时候显示的图片
//					.showImageOnFail(R.drawable.ic_launcher)
					.cacheInMemory(false)
					// 设置下载的图片是否缓存在内存中
					.cacheOnDisc(true)
					// 设置下载的图片是否缓存在SD卡中
					.considerExifParams(true)
					.imageScaleType(ImageScaleType.EXACTLY)// 设置图片以如何的编码方式显示
					.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型
					// .decodingOptions(android.graphics.BitmapFactory.Options
					// decodingOptions)//设置图片的解码配置
					.considerExifParams(true)
					// .delayBeforeLoading(1000)
					// 设置图片下载前的延迟
					.delayBeforeLoading(0)// int delayInMillis为你设置的延迟时间
					// 设置图片加入缓存前，对bitmap进行设置
					// 。preProcessor(BitmapProcessor preProcessor)
					.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
					// .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角，弧度为多少
					// .displayer(new FadeInBitmapDisplayer(10))// 淡入
					.build();
		}

		return options2;
	}
	
	public static DisplayImageOptions getListOptions3() {
		if (options3 == null) {
			options3 = new DisplayImageOptions.Builder()
					// 设置图片在下载期间显示的图片
					// 设置图片Uri为空或是错误的时候显示的图片
					// 设置图片加载/解码过程中错误时候显示的图片
					.cacheInMemory(false)
					// 设置下载的图片是否缓存在内存中
					.cacheOnDisc(true)
					// 设置下载的图片是否缓存在SD卡中
					.considerExifParams(true)
					.imageScaleType(ImageScaleType.EXACTLY)// 设置图片以如何的编码方式显示
					.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型
					// .decodingOptions(android.graphics.BitmapFactory.Options
					// decodingOptions)//设置图片的解码配置
					.considerExifParams(true)
					// .delayBeforeLoading(1000)
					// 设置图片下载前的延迟
					.delayBeforeLoading(0)// int delayInMillis为你设置的延迟时间
					// 设置图片加入缓存前，对bitmap进行设置
					// 。preProcessor(BitmapProcessor preProcessor)
					.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
					// .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角，弧度为多少
					// .displayer(new FadeInBitmapDisplayer(10))// 淡入
					.build();
		}

		return options3;
	}

	public static DisplayImageOptions getUserPicOptions() {
		if (userPicOptions == null) {
			userPicOptions = new DisplayImageOptions.Builder()
					// 设置图片在下载期间显示的图片
//					.showImageOnLoading(R.drawable.about_me_icon1)
					// 设置图片Uri为空或是错误的时候显示的图片
//					.showImageForEmptyUri(R.drawable.about_me_icon1)
					// 设置图片加载/解码过程中错误时候显示的图片
//					.showImageOnFail(R.drawable.about_me_icon1)
					.cacheInMemory(false)
					// 设置下载的图片是否缓存在内存中
					.cacheOnDisc(true)
					// 设置下载的图片是否缓存在SD卡中
					.considerExifParams(true)
					.imageScaleType(ImageScaleType.EXACTLY)// 设置图片以如何的编码方式显示
					.bitmapConfig(Bitmap.Config.RGB_565)// 设置图片的解码类型
					// .decodingOptions(android.graphics.BitmapFactory.Options
					// decodingOptions)//设置图片的解码配置
					.considerExifParams(true).delayBeforeLoading(0)
					// 设置图片下载前的延迟
					// .delayBeforeLoading(100)//int delayInMillis为你设置的延迟时间
					// 设置图片加入缓存前，对bitmap进行设置
					// 。preProcessor(BitmapProcessor preProcessor)
//					.resetViewBeforeLoading(true)// 设置图片在下载前是否重置，复位
					// .displayer(new RoundedBitmapDisplayer(20))//是否设置为圆角，弧度为多少
					// .displayer(new FadeInBitmapDisplayer(10))// 淡入
					.build();
		}

		return userPicOptions;
	}

	@SuppressWarnings("deprecation")
	public static void initImageLoaderConfiguration(ImageLoader imageLoader,
			Context context) {
		File cacheDir = StorageUtils.getOwnCacheDirectory(context,
				"imageloader/Cache");
		ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
				context)
				// .memoryCacheExtraOptions(1024, 1024)
				// maxwidth, max height，即保存的每个缓存文件的最大长宽
				// 线程池内加载的数量
				.threadPoolSize(5)
				// 线程优先级
				.threadPriority(Thread.NORM_PRIORITY - 2)
				.denyCacheImageMultipleSizesInMemory()
				.memoryCache(new UsingFreqLimitedMemoryCache(4 * 1024 * 1024))
				// You can pass your own memory cache
				// implementation/你可以通过自己的内存缓存实现
				.memoryCacheSize(4 * 1024 * 1024)
				.discCacheSize(50 * 1024 * 1024)
				.discCacheFileNameGenerator(new Md5FileNameGenerator())
				// 将保存的时候的URI名称用MD5 加密
				.tasksProcessingOrder(QueueProcessingType.FIFO)
				.discCacheFileCount(100)
				// 缓存的文件数量
				.discCache(new UnlimitedDiscCache(cacheDir))
				// 自定义缓存路径
				.defaultDisplayImageOptions(DisplayImageOptions.createSimple())
				.imageDownloader(
						new BaseImageDownloader(context, 5 * 1000, 30 * 1000))
				.writeDebugLogs() // Remove for releaseapp
				.build();// 开始构建
		imageLoader.init(config);
	}

}
